package com.example.artemis.events;

/**
 * 事件监听器接口
 * 定义了处理事件的通用接口
 *
 * @param <T> 事件类型，必须继承自MessageEvent
 */
public interface EventListener<T extends MessageEvent> {

    /**
     * 处理事件
     *
     * @param event 要处理的事件
     */
    void handleEvent(T event);

    /**
     * 获取监听器支持的事件类型
     *
     * @return 支持的事件类型Class对象
     */
    Class<T> getEventType();

    /**
     * 获取监听器名称（用于调试和管理）
     *
     * @return 监听器名称
     */
    String getListenerName();
}